// import babel from '@rollup/plugin-babel'
import nodeResolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import typescript from 'rollup-plugin-typescript2'
import del from 'del'
import { terser } from "rollup-plugin-terser"
import postcss from 'rollup-plugin-postcss'
import autoprefixer from 'autoprefixer'
import replace from '@rollup/plugin-replace'
import license from 'rollup-plugin-license'
import log from './rollup/log'

del.sync(['lib/**', 'umd/**']);

const cjs = {
  external: [ // 外部引用
    'react',
    'classnames',
    '@y.dsh/event',
    '@y.dsh/utils/lib/utils',
    '@y.dsh/utils/lib/dom',
    '@y.dsh/utils/lib/slideTo',
    '@y.dsh/hooks/lib/usePassiveSupported',
    '@y.dsh/hooks/lib/useParamFnFreeze',
  ],
  output: {
    file: 'lib/index.js', // 输出文件名
    format: 'cjs', // 模块化
    exports: 'default',
    globals: { // 外部引用全局名
      'react': 'React',
      'classnames': 'classnames',
      '@y.dsh/event': 'Event',
      '@y.dsh/utils/lib/utils': 'utils',
      '@y.dsh/utils/lib/dom': 'dom',
      '@y.dsh/utils/lib/slideTo': 'slideTo',
      '@y.dsh/hooks/lib/usePassiveSupported': 'usePassiveSupported',
      '@y.dsh/hooks/lib/useParamFnFreeze': 'useParamFnFreeze',
    }
  }
};
const umd = {
  external: [ // 外部引用
    'react',
  ],
  output: {
    file: 'umd/index.js', // 输出文件名
    format: 'umd', // 模块化
    name: 'swipe', // 本模块的全局变量名
    globals: { // 外部引用全局名
      'react': 'React',
    }
  }
};
const config = {
  input: 'src/index.tsx', // 单独打包主文件
  // 在此引入cjs、umd配置
  plugins: [
    log(), // 编译日志
    replace({ // 设置生产环境
      'process.env.NODE_ENV': '"production"',
      preventAssignment: false,
    }),
    nodeResolve(), // 处理组件引用
    commonjs(), // commonjs转换为ES6
    typescript({ // 处理ts
      clean: true, // 缓存
      useTsconfigDeclarationDir: true, // 使用ts文件配置
    }),
    // babel({ // 高级语法转换
    //   extensions: [
    //     '.js',
    //     '.jsx',
    //     '.ts',
    //     '.tsx'
    //   ],
    //   babelHelpers: 'bundled'
    // }),
    terser(), // 压缩精简js
    postcss({ // 处理scss
      plugins: [autoprefixer], // 添加前缀
      extract: true, // 输出为一个文件
      minimize: true, // 压缩
    }),
    license({ // 写上版本
      banner: (`
          Copyright <%= moment().format('YYYY') %> dsh.
          easy version <%= pkg.version %>.
        `)
    })
  ]
};

// 打包各个组件
export default [
  { ...config, ...cjs },
  { ...config, ...umd },
];
